'''
编写一个程序，
使用列表推导式生成一个由 1~20 中能被 3 整除的数构成的列表，
并输出。
'''
lis1={i for i in range(1,21) if i%3==0}
print(lis1)

'''
编写一个函数，从键盘输入一个字符串，
返回其中每个字符出现的次数（使用字典存储）。
'''
def dic_str():
    str1=input("请输入一个字符串：")
    dic1={i:str1.count(i) for i in str1}
    return dic1
print(dic_str())


'''
编写一个程序，
去除一个列表中的重复元素并保持顺序不变
（例如：[1,2,3,2,1] → [1,2,3]）。
'''
def lis_clean():
    lis1=[1,2,3,2,1]
    lis2=[]
    for i in lis1:
        if i not in lis2:
            lis2.append(i)
    return lis2
print(lis_clean())
'''
创建一个名为Person的类，
具有属性name和age，
以及方法say_hello()打印 "Hello, I'm xxx and I'm xxx years old"。

'''
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def say_hello(self):
        print(f"Hello, I'm {self.name} and I'm {self.age} years old")
p1=Person("张三",18)
p1.say_hello()

'''
创建一个名为Rectangle的类，具有属性width和height，并添加方法area()返回面积，perimeter()返回周长。
'''
class Rectangle:
    def __init__(self,width,height):
        self.width=width
        self.height=height
    def area(self):
        return self.width*self.height
    def perimeter(self):
        return 2*(self.width+self.height)

r1=Rectangle(10,20)
print(r1.area())
print(r1.perimeter())

my_list=["abc",1,2,3]
# 将列表中的非字符串元素转换为字符串
str_list = [str(item) for item in my_list]
print(str_list)
# 使用空字符串作为分隔符连接列表元素
Res = ''.join(str_list)
print(Res)